# 导包
from api.login import LoginAPI
from api.course import CourseAPI


# 注意：方法之间有依赖关系时，运行时建议直接在测试类上面运行。
# 创建测试类
class TestLoginAPI:
    # 初始化
    token = None

    # 前置处理
    def setup(self):
        # 实例化接口类的对象
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()

    # 后置处理
    def teardown(self):
        pass

    # 01 登录成功
    def test01_login_success(self):
        # 获取图片验证码
        # 实例化接口类.封装接口方法(按照封装方法参数传递测试数据)
        response = self.login_api.get_verify_code()
        print(response.status_code)
        print(response.json())
        # 提取获取图片验证码返回的uuid参数值
        uuid = response.json().get("uuid")
        # 登录成功
        test_data = {
            "username": "admin",
            "password": "admin123",
            "code": "2",
            "uuid": uuid
        }
        response = self.login_api.login(test_data=test_data)
        # print(response.status_code)
        print(response.json())
        # 断言响应状态码为200
        assert 200 == response.status_code
        # 断言返回数据中包含【成功】
        assert "成功" in response.text
        # 断言返回数据中code值为200
        assert 200 == response.json().get("code")

        # 提取token数据
        TestLoginAPI.token = response.json().get("token")
        print(TestLoginAPI.token)

    # 02 添加课程成功
    def test02_add_course_success(self):
        # 调用封装课程新增接口（准备测试数据并传递）、获取响应数据、断言
        test_data = {
            "name": "新增课程0406001",
            "subject": "6",
            "price": 10899,
            "applicablePerson": "2",
            "info": "新增课程0406001"
        }
        response = self.course_api.insert_course(test_data=test_data, token666=TestLoginAPI.token)
        print(response.json())

        # 断言
        assert 200 == response.status_code
        assert "成功" in response.text
        assert 200 == response.json().get("code")

    # 03 上传合同成功
    def test03_upload_contract_success(self):
        pass

    # 04 新增合同成功
    def test04_add_contract(self):
        pass
